package com.newtouch.bxzs.policy.service;

import com.newtouch.bxzs.policy.model.bo.PreservationBO;
import com.newtouch.bxzs.policy.model.bo.enterprise.*;
import com.newtouch.bxzs.policy.model.bo.family.PolicyUserListBO;
import com.newtouch.bxzs.policy.model.vo.PolicyInfoPageVO;
import com.newtouch.bxzs.policy.model.vo.PolicyUserListVO;
import com.newtouch.bxzs.policy.model.vo.PreservationProgressInfoVO;
import com.newtouch.bxzs.policy.model.vo.enterprise.*;

import java.util.List;


/**
 * 企业单管理service层
 *
 * <p>
 * <b>History:</b>
 * <table border="1">
 * <tr>
 * <th>Date</th>
 * <th>Operator</th>
 * <th>Memo</th>
 * </tr>
 * <tr>
 * <td>2021/1/7 13:31</td>
 * <td>linhongxi</td>
 * <td>Create</td>
 * </tr>
 * </table>
 *
 * @author linhongxi
 * @version 1.0.0
 * @since 1.0.0
 */
public interface EnterprisePolicyInsuranceService {

    /**
     * 根据保单号获取企业单详情
     *
     * @param enterprisePolicyInfoVO 企业单详情查询条件
     *
     * @return 企业单详情
     */
    EnterprisePolicyBO getEnterprisePolicyInfoInsurance(EnterprisePolicyInfoVO enterprisePolicyInfoVO);
    /**
     * 根据保单号获取保全列表
     *
     * @param policyInfoPageVO 企业单详情-保全查询条件
     *
     * @return 企业单详情-保全列表
     */
    List<PreservationBO> getEnterprisePolicyPreservationInsurance(PolicyInfoPageVO policyInfoPageVO);

    /**
     * 根据保单号获取理赔列表
     *
     * @param policyInfoPageVO 企业单详情-理赔查询条件
     *
     * @return 企业单详情-理赔列表
     */
    List<EnterpriseClaimsBO> getEnterprisePolicyClaimsInsurance(PolicyInfoPageVO policyInfoPageVO);
    /**
     * 根据保单号获取企业单详情页人员清单列表
     *
     * @param policyUserListVO  企业单详情-人员列表查询条件
     *
     * @return 企业单详情-人员清单列表
     */
    List<PolicyUserListBO> getEnterprisePolicyUserListInsurance(PolicyUserListVO policyUserListVO);

    /**
     * 根据查询条件获取新契约进度列表
     *
     * @param enterprisePolicyNewContractVO 企业单新契约进度列表查询条件
     *
     * @return 企业单新契约进度列表
     */
    List<EnterprisePolicyNewContractBO> getNewContractListByEnterprisePolicyInsurance(EnterprisePolicyNewContractVO enterprisePolicyNewContractVO);

    /**
     * 根据查询条件获取新契约进度信息-人员清单列表
     *
     * @param enterprisePolicyNewContractUserListVO 企业单新契约进度详情--人员清单查询条件
     *
     * @return 企业单新契约进度详情--人员清单
     */
    List<PolicyUserListBO> getNewContractUserListByEnterprisePolicyInsurance(EnterprisePolicyNewContractUserListVO enterprisePolicyNewContractUserListVO);


    /**
     * 根据保单号获取新契约进度详情
     *
     * @param enterprisePolicyNewContractInfoVO 企业单新契约进度详情查询条件
     *
     * @return 企业单新契约进度详情
     */
    EnterprisePolicyNewContractBO getNewContractInfoByEnterprisePolicyInsurance(EnterprisePolicyNewContractInfoVO enterprisePolicyNewContractInfoVO);

    /**
     * 根据查询条件获取保全进度列表
     *
     * @param enterprisePreservationVO 企业单保全进度列表查询条件
     *
     * @return 企业单保全进度列表
     */
    List<EnterprisePreservationProgressInfoBO> getPreservationListByEnterPrisePolicyInsurance(EnterprisePreservationVO enterprisePreservationVO);
    /**
     * 根据保单号获取保全进度详情
     *
     * @param preservationProgressInfoVO 企业单保全进度详情查询条件
     *
     * @return 企业单保全进度详情
     */
    EnterprisePreservationProgressInfoBO getPreservationInfoByEnterPrisePolicyInsurance(PreservationProgressInfoVO preservationProgressInfoVO);

    /**
     * 根据查询条件获取理赔进度列表
     *
     * @param enterpriseClaimsVO 企业单理赔进度列表
     *
     * @return 企业单理赔进度列表
     */
    List<EnterpriseClaimsProgressBO> getClaimsProgressListByEnterprisePolicyInsurance(EnterpriseClaimsVO enterpriseClaimsVO);

    /**
     * 根据查询条件获取理赔进度列表--个人
     *
     * @param policyUserListVO 企业单理赔进度个人列表查询条件
     *
     * @return 企业单理赔进度个人列表
     */
    List<EnterpriseClaimsProgressBO> getClaimsProgressUserListByEnterprisePolicyInsurance(PolicyUserListVO policyUserListVO);

    /**
     * 根据查询条件获取理赔进度列表--批次
     *
     * @param policyInfoPageVO 企业单理赔进度批次列表查询条件
     *
     * @return 企业单理赔进度批次列表
     */
    List<EnterpriseClaimsProgressBO> getClaimsProgressBatchListByEnterprisePolicyInsurance(PolicyInfoPageVO policyInfoPageVO);

    /**
     * 根据查询条件获取满期保单列表
     *
     * @param enterpriseExpirationPolicyVO 企业单满期列表查询条件
     *
     * @return 企业单满期列表
     */
    List<EnterpriseExpirationPolicyBO> getExpirationPolicyListByEnterprisePolicyInsurance(EnterpriseExpirationPolicyVO enterpriseExpirationPolicyVO);

    /**
     * 根据查询条件获取续期保单列表
     *
     * @param enterpriseRenewalPolicyVO 企业单续期列表查询条件
     *
     * @return 企业单续期列表
     */
    List<EnterpriseRenewalPolicyBO> getRenewalPolicyListByEnterPrisePolicyInsurance(EnterpriseRenewalPolicyVO enterpriseRenewalPolicyVO);

}
